using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Gratamira.AccesoDato;


namespace Gratamira.CapaNegocio
{
    public class Empresa
    {
        #region Atributos
        private string _empresaID;
        private string _nombre;
        private string _nit;
        private string _direccion;
        private string _telefono;
        private string _pais;
        private string _fax;
        private string _UsuarioCreacion;
        private string _FechaCreacion;
        private string _UsuarioModificacion;
        private string _FechaModificacion;
        private bool _Modificada;
        #endregion

        #region Constructores
        public Empresa()
        {
        }

        public Empresa(String pEmpresaID)
        {
            EmpresaID = pEmpresaID;
            leerEmpresa();
        }
        #endregion

        #region Propiedades
        public string Direccion
        {
            get
            {
                return _direccion;
            }
            set
            {
                if (_direccion != value)
                {
                    Modificada = true;
                }
                _direccion = value;
            }
        }

        public string EmpresaID
        {
            get
            {
                return _empresaID;
            }
            set
            {
                _empresaID = value;
            }
        }

        public string Fax
        {
            get
            {
                return _fax;
            }
            set
            {
                if (_fax != value)
                {
                    Modificada = true;
                }
                _fax = value;
            }
        }

        public string Nit
        {
            get
            {
                return _nit;
            }
            set
            {
                if (_nit != value)
                {
                    Modificada = true;
                }
                _nit = value;
            }
        }

        public string Nombre
        {
            get
            {
                return _nombre;
            }
            set
            {
                if (_nombre != value)
                {
                    Modificada = true;
                }
                _nombre = value;
            }
        }

        public string Pais
        {
            get
            {
                return _pais;
            }
            set
            {
                if (_pais != value)
                {
                    Modificada = true;
                }
                _pais = value;
            }
        }

        public string Telefono
        {
            get
            {
                return _telefono;
            }
            set
            {
                if (_telefono != value)
                {
                    Modificada = true;
                }
                _telefono = value;
            }
        }

        public string UsuarioCreacion
        {
            get
            {
                return _UsuarioCreacion.Trim();
            }
            set
            {
                _UsuarioCreacion = value;
            }
        }

        public string UsuarioModificacion
        {
            get
            {
                return _UsuarioModificacion.Trim();
            }
            set
            {
                _UsuarioModificacion = value;
            }
        }

        public string FechaCreacion
        {
            get
            {
                return _FechaCreacion;
            }
            set
            {
                _FechaCreacion = value;
            }
        }

        public string FechaModificacion
        {
            get
            {
                return _FechaModificacion;
            }
            set
            {
                _FechaModificacion = value;
            }
        }

        public bool Modificada
        {
            get
            {
                return _Modificada;
            }
            set
            {
                _Modificada = value;
            }
        }

        #endregion

        #region Metodos

        public void actualizarEmpresa()
        {
            FechaModificacion = DateTime.Now.ToString("MM/dd/yyyy HH:mm");
            accesoDatos p = new accesoDatos();
            string tSql = "UPDATE Empresa SET  Nombre = '" + Nombre + "'" +
                          ", NIT = '" + Nit + "'" +
                          ", Direccion = '" + Direccion + "'" +
                          ", Telefono = '" + Telefono + "'" +
                          ", Pais = '" + Pais + "'" +
                          ", UsuUltMod = '" + UsuarioModificacion + "'" +
                          ", FecUltMod = '" + FechaModificacion + "'" +
                          ", Fax = '" + Fax + "'";
            tSql += "  WHERE EmpresaID = '" + EmpresaID + "'";
            p.ejecutarSQL(tSql, "Gratamira");
            Modificada = false;
        }

        public void leerEmpresa()
        {
            DataRow fila;
            string strSql = "SELECT * FROM Empresa  WHERE EmpresaID = '" + EmpresaID + "'";
            DataTable dt = new DataTable();
            accesoDatos p = new accesoDatos();
            dt = p.leerDatosSQL(strSql, "Gratamira");

            fila = dt.Rows[0];

            Nombre = fila["Nombre"].ToString(); ;
            Nit = fila["NIT"].ToString();
            Direccion = fila["Direccion"].ToString();
            Telefono = fila["Telefono"].ToString();
            Pais = fila["Pais"].ToString();
            Fax = fila["Fax"].ToString();
            UsuarioCreacion = fila["CodUsuCre"].ToString(); ;
            UsuarioModificacion = fila["UsuUltMod"].ToString(); ;
            FechaCreacion = fila["FecHorCre"].ToString(); ;
            FechaModificacion = fila["FecUltMod"].ToString(); ;
            Modificada = false;
        }

        public DataTable leerEmpresa(string valor, int tipo)
        {
            string strSql = "SELECT EmpresaID as Codigo, Nombre, NIT, Direccion, Telefono, Pais, fax FROM Empresa ";

            switch (tipo)
            {
                case 0:
                    strSql += "WHERE Nombre like '%" + valor + "%' ";
                    break;
                case 1:
                    strSql += "WHERE EmpresaID  = '" + valor + "' ";
                    break;
                case 2:
                    strSql += "WHERE Telefono like '%" + valor + "%' ";
                    break;
            }
            strSql += "ORDER BY EmpresaID";


            DataTable dt = new DataTable();
            accesoDatos p = new accesoDatos();
            dt = p.leerDatosSQL(strSql, "Gratamira");
            Modificada = false;
            return dt;
        }

        public void eliminarEmpresa(string pEmpresaID)
        {
            accesoDatos p = new accesoDatos();
            p.ejecutarSQL("DELETE FROM Empresa WHERE EmpresaID = '" + pEmpresaID + "'", "Gratamira");
        }

        public bool insertarEmpresa()
        {
            accesoDatos p = new accesoDatos();
            string tSql = "INSERT INTO Empresa " +
                            "(Nombre, NIT, Direccion, " +
                            "Telefono, Pais, Fax, " +
                            "CodUsuCre, FecHorCre, UsuUltMod, FecUltMod) VALUES ";

            Fax = (Fax != "") ? "'" + Fax + "'" : "NULL";

            tSql += "  ('" + Nombre + "','" + Nit + "','" + Direccion + "'";
            tSql += ",'" + Telefono + "','" + Pais + "'," + Fax;
            tSql += ",'" + UsuarioCreacion + "', getdate() ,'" + UsuarioModificacion + "', getdate())";

            p.ejecutarSQL(tSql, "Gratamira");
            Modificada = false;
            return true;
        }

        public string[] leerListaXML()
        {
            return AccesoDato.Conexion.obtenerLista();
        }

        #endregion
    }
}
